/******************************************************************************
 * @File name   :      IRedemptionService.java
 *
 * @Author      :      JIZHANGS
 *
 * @Date        :      Jul 31, 2015
 *
 * @Copyright Notice: 
 * Copyright (c) 2015 Capgemini, Inc. All  Rights Reserved.
 * This software is published under the terms of the Capgemini Software
 * License version 1.0, a copy of which has been included with this
 * distribution in the LICENSE.txt file.
 * 
 * 
 * ----------------------------------------------------------------------------
 * Date                   Who         Version        Comments
 * Jul 31, 2015 1:06:59 PM        JIZHANGS     1.0            Initial Version
 *****************************************************************************/
package com.cap.bts.crmdp.dealer.mars.service;

import java.util.List;

import com.cap.bts.crmdp.dealer.mars.dto.ItemTypeInfoDto;
import com.cap.bts.crmdp.dealer.mars.dto.MarsEligibilityDto;
import com.cap.bts.crmdp.dealer.mars.dto.MessageNumDto;
import com.cap.bts.crmdp.dealer.mars.dto.PackageMarsListDto;
import com.cap.bts.crmdp.dealer.redemption.domain.MemberPackageRedemption;
import com.cap.bts.crmdp.dealer.redemption.dto.MemberPackageInfoResultsDto;
import com.cap.bts.crmdp.dealer.redemption.dto.MemberQueryDto;
import com.cap.bts.crmdp.dealer.redemption.dto.RedemptionSubmitDto;
import com.cap.bts.crmdp.webservice.dto.WSCrmCancelOrderResultDto;
import com.cap.bts.crmdp.webservice.dto.WSCrmOrderDto;
import com.cap.bts.crmdp.webservice.dto.WSCrmSettlementDto;
import com.cap.bts.crmdp.webservice.dto.WSCrmSettlementResultDto;
import com.cap.bts.framework.common.exception.AppException;
import com.cap.bts.framework.common.service.IBaseService;

/**
 *
 */
public interface IMarsRedemptionService extends IBaseService {
    
    /**
     * @Date        :      2015年9月17日
     * @param dto
     * @return
     * @throws AppException
     */
    List<MemberPackageInfoResultsDto> getPackageListByMemberMars(MemberQueryDto dto) throws AppException;
  
    
    /**
     * sendRedemptionCode
     * @param redemptionId
     * @param memberPackageId 
     * @return
     * @throws AppException
     */
    boolean sendRedemptionCode(Long redemptionId, Long memberPackageId) throws AppException;
    
    /**
     * 
     * @Date        :      Nov 10, 2015
     * @param dto
     * @return
     * @throws AppException
     */
    void usePackageItem(RedemptionSubmitDto dto) throws AppException;
    
    /**
     * 
     * @Date        :      Nov 10, 2015
     * @param dto
     * @return
     * @throws AppException
     */
    void usePackageItemList(PackageMarsListDto packageMarsListDto) throws AppException;
    
    /**
     * @Date        :      2015-7-20
     * @param dto 
     * @return Boolean
     */
    MemberPackageRedemption usePackageItemWithActiveCode(RedemptionSubmitDto dto) throws AppException;
    
    /**
     * @Date        :      2015年9月9日
     * @param dto
     * @return
     * @throws AppException
     */
    MemberPackageRedemption usePackageItemWithoutActiveCode(RedemptionSubmitDto dto) throws AppException;
    
    
    /**
     * 
     * @Date        :      Nov 11, 2015
     * @param id
     * @return
     * @throws AppException
     */
    public List<ItemTypeInfoDto>  getItemTypeInfoListByItemId(ItemTypeInfoDto dto) throws AppException;
    
    /**
     * 
     * @Date        :      Nov 11, 2015
     * @param id
     * @return
     * @throws AppException
     */
    public MarsEligibilityDto getMarsEligibilityDtoByItemId(ItemTypeInfoDto dto) throws AppException;
    
    /**
     * 
     * @Date        :      Nov 16, 2015
     * @param dto
     * @return
     * @throws AppException
     */
    public  WSCrmSettlementResultDto settementRedemption(WSCrmSettlementDto dto);
    
    
    /**
     * 
     * @Date        :      Nov 16, 2015
     * @param dto
     * @return
     * @throws AppException
     */
    public WSCrmCancelOrderResultDto cancelRedemption(WSCrmOrderDto dto);
    
    
    /**
     * 
     * @Date        :      Nov 16, 2015
     * @param dto
     * @return
     * @throws AppException
     */
    public WSCrmCancelOrderResultDto cancelOrder(WSCrmOrderDto dto);
    
    
    /**
     * 
     * @Date        :      Nov 16, 2015
     * @param dto
     * @return
     * @throws AppException
     */
    public  WSCrmSettlementResultDto settementOrder(WSCrmSettlementDto dto);
    
    /**
     * @param dealerId
     * @return
     * @throws AppException
     */
    public MessageNumDto getNumberAboutMessage(Long dealerId, String date) throws AppException;
    
    
    public List<ItemTypeInfoDto>  getItemListForCoupon(ItemTypeInfoDto dto) throws AppException;
    
}
